home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / MIXTREE.PAK / GLOBALS.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  13KB  |  293 lines

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1993 - 1995  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. // PURPOSE:
  9. //    Contains declarations for all globally scoped names in the program.
  10. //
  11.  
  12. #include <commctrl.h>  // TreeView and ImageList declarations live here.
  13.  
  14. //-------------------------------------------------------------------------
  15. // Product identifier string defines
  16.  
  17. //  **TODO** Change these strings to the name of your application.
  18.  
  19. #define APPNAME       MixTree
  20. #define ICONFILE      MixTree.ico
  21. #define SZAPPNAME     "MixTree"
  22. #define SZDESCRIPTION "MixTree Example Application"
  23. #define SZABOUT       "About MixTree"
  24. #define SZVERSION     "Version 4.0"
  25.  
  26.  
  27. //-------------------------------------------------------------------------
  28. // Functions for handling main window messages.  The message-dispatching
  29. // mechanism expects all message-handling functions to have the following
  30. // prototype:
  31. //
  32. //     LRESULT FunctionName(HWND, UINT, WPARAM, LPARAM);
  33.  
  34. // **TODO**  Add message-handling function prototypes here.  Be sure to
  35. //           add the function names to the main window message table in
  36. //           mixtree.c.
  37.  
  38. LRESULT MsgCommand(HWND, UINT, WPARAM, LPARAM);
  39. LRESULT MsgDestroy(HWND, UINT, WPARAM, LPARAM);
  40. LRESULT MsgCreate(HWND, UINT, WPARAM, LPARAM);
  41. LRESULT MsgSize(HWND, UINT, WPARAM, LPARAM);
  42. LRESULT MsgNotify(HWND, UINT, WPARAM, LPARAM);
  43. LRESULT MsgPaint(HWND, UINT, WPARAM, LPARAM);
  44. LRESULT MsgChangeBranch(HWND, UINT, WPARAM, LPARAM);
  45.  
  46. //-------------------------------------------------------------------------
  47. // Functions for handling main window commands--ie. functions for
  48. // processing WM_COMMAND messages based on the wParam value.
  49. // The message-dispatching mechanism expects all command-handling
  50. // functions to have the following prototype:
  51. //
  52. //     LRESULT FunctionName(HWND, WORD, WORD, HWND);
  53.  
  54. // **TODO**  Add message-handling function prototypes here.  Be sure to
  55. //           add the function names to the main window command table in
  56. //           mixtree.c.
  57.  
  58. LRESULT CmdExit(HWND, WORD, WORD, HWND);
  59. LRESULT CmdAbout(HWND, WORD, WORD, HWND);
  60. LRESULT CmdFill(HWND, WORD, WORD, HWND);
  61. LRESULT CmdDisplayAll(HWND, WORD, WORD, HWND);
  62. LRESULT CmdCollapseAny(HWND, WORD, WORD, HWND);
  63.  
  64. //-------------------------------------------------------------------------
  65. // Global function prototypes.
  66.  
  67. // **TODO**  Add global function prototypes here.
  68.  
  69. BOOL CenterWindow(HWND, HWND);                              // defined in misc.c
  70. BOOL InitApplication(HINSTANCE, int);                       // defined in init.c
  71. BOOL BuildMixerTree(HWND);                                  // defined in mixline.c
  72. void ExpandTreeView(void);                                  // defined in mixline.c
  73. void ExpandBranch(HTREEITEM);                               // defined in mixline.c
  74. BOOL GetItemInfo(HWND, long);                               // defined in mixline.c
  75. void DisplayItemInfo(HWND, HDC);                            // defined in mixline.c
  76. BOOL InitMixer(HWND);                                       // defined in mixinfo.c
  77. MMRESULT GetLineInfo(HWND, LPMIXERLINE, DWORD);             // defined in mixinfo.c
  78. MMRESULT GetLineControls(HWND, LPMIXERLINECONTROLS, DWORD); // defined in mixinfo.c
  79.  
  80.     // Callback functions.  These are called by Windows.
  81.  
  82. // **TODO**  Add new callback function prototypes here.
  83.  
  84. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  85.  
  86.  
  87. //-------------------------------------------------------------------------
  88. // Command ID definitions.  These definitions are used to associate menu
  89. // items with commands.
  90.  
  91. // **TODO**  Add IDs for all menu commands here.  Be sure that the IDs you
  92. //           add are also added to the main window command table in generic.c
  93. //           and the menu statements in the resource file.
  94.  
  95. // File menu
  96. #define IDM_EXIT        1000
  97. #define IDM_FILL        1001
  98. #define IDM_DISPLAYALL  1002
  99. #define IDM_COLLAPSEANY 1003
  100.  
  101. // Help menu
  102. #define IDM_ABOUT       1100
  103.  
  104. //-------------------------------------------------------------------------
  105. // String Table ID definitions.
  106.  
  107. #define IDS_APPNAME     1
  108. #define IDS_DESCRIPTION 2
  109.  
  110. //-------------------------------------------------------------------------
  111. //  About dialog defines.
  112.  
  113. #define IDD_VERFIRST    100
  114. #define IDD_VERLAST     104
  115.  
  116. //-------------------------------------------------------------------------
  117. // Global variable declarations.
  118.  
  119. extern HINSTANCE hInst;          // The current instance handle
  120. extern char      szAppName[];    // The name of this application
  121. extern char      szTitle[];      // The title bar text
  122.  
  123. // **TODO**  For NON-MDI applications, uncomment line 1 below and comment
  124. //           line 2.  For MDI applications, uncomment line 2 below, comment
  125. //           line 1, and then define hwndMDIClient as a global variable in
  126. //           INIT.C
  127. #define hwndMDIClient NULL        /* (1) Stub for NON-MDI applications. */
  128. // extern HWND hwndMDIClient;     /* (2) For MDI applications.          */
  129.  
  130.  
  131. //-------------------------------------------------------------------------
  132. // Message and command dispatch infrastructure.  The following type
  133. // definitions and functions are used by the message and command dispatching
  134. // mechanism and do not need to be changed.
  135.  
  136.     // Function pointer prototype for message handling functions.
  137. typedef LRESULT (*PFNMSG)(HWND, UINT, WPARAM, LPARAM);
  138.  
  139.     // Function pointer prototype for command handling functions.
  140. typedef LRESULT (*PFNCMD)(HWND, WORD, WORD, HWND);
  141.  
  142.     // Enumerated type used to determine which default window procedure
  143.     // should be called by the message- and command-dispatching mechanism
  144.     // if a message or command is not handled explicitly.
  145. typedef enum
  146. {
  147.    edwpNone,            // Do not call any default procedure.
  148.    edwpWindow,          // Call DefWindowProc.
  149.    edwpDialog,          // Call DefDlgProc (This should be used only for
  150.             // custom dialogs - standard dialog use edwpNone).
  151.    edwpMDIChild,        // Call DefMDIChildProc.
  152.    edwpMDIFrame         // Call DefFrameProc.
  153. } EDWP;                 // Enumeration for Default Window Procedures
  154.  
  155.     // This structure maps messages to message handling functions.
  156. typedef struct _MSD
  157. {
  158.     UINT   uMessage;
  159.     PFNMSG pfnmsg;
  160. } MSD;                 // MeSsage Dispatch structure
  161.  
  162.     // This structure contains all of the information that a window
  163.     // procedure passes to DispMessage in order to define the message
  164.     // dispatching behavior for the window.
  165. typedef struct _MSDI
  166. {
  167.     int  cmsd;          // Number of message dispatch structs in rgmsd
  168.     MSD *rgmsd;         // Table of message dispatch structures
  169.     EDWP edwp;          // Type of default window handler needed.
  170. } MSDI, FAR *LPMSDI;    // MeSsage Dipatch Information
  171.  
  172.     // This structure maps command IDs to command handling functions.
  173. typedef struct _CMD
  174. {
  175.     WORD   wCommand;
  176.     PFNCMD pfncmd;
  177. } CMD;                  // CoMmand Dispatch structure
  178.  
  179.     // This structure contains all of the information that a command
  180.     // message procedure passes to DispCommand in order to define the
  181.     // command dispatching behavior for the window.
  182. typedef struct _CMDI
  183. {
  184.     int  ccmd;          // Number of command dispatch structs in rgcmd
  185.     CMD *rgcmd;         // Table of command dispatch structures
  186.     EDWP edwp;          // Type of default window handler needed.
  187. } CMDI, FAR *LPCMDI;    // CoMmand Dispatch Information
  188.  
  189.     // Message and command dispatching functions.  They look up messages
  190.     // and commands in the dispatch tables and call the appropriate handler
  191.     // function.
  192. LRESULT DispMessage(LPMSDI, HWND, UINT, WPARAM, LPARAM);
  193. LRESULT DispCommand(LPCMDI, HWND, WPARAM, LPARAM);
  194.  
  195.     // Message dispatch information for the main window
  196. extern MSDI msdiMain;
  197.     // Command dispatch information for the main window
  198. extern CMDI cmdiMain;
  199.  
  200. extern HMENU       hMenu;          // handle of application menu
  201. extern HWND        hwndTreeView;   // hwnd of TreeView control
  202. extern HFONT       hfTVFont;       // handle to font used in TreeView control
  203. extern HIMAGELIST  hImageList;     // handle to ImageList
  204. extern long        lCurrentItem;   // currently selected item in mixer list
  205. extern HTREEITEM   htiCurrentRoot; // root item of currently selected branch
  206. extern BOOL        fDisplayAll;    // for View.Display All menu command
  207. extern BOOL        fCollapseAny;   // for View.Collapse Any menu command
  208. extern BOOL        fExpandEnabled; // controls expansion of TreeView items
  209.  
  210. #define PM_CHANGEBRANCH  WM_USER    // private message used when user selects
  211.                     // a new branch of the TreeView control
  212.                     // when only one may be expanded at once.
  213.  
  214. // TreeView control state
  215. #define MIXITEM_NOSELECTION  -1     // No item is selected in TreeView control.
  216.                     // This is a state of the control, not an
  217.                     // attribute of an item in the control.
  218.  
  219. // TreeView control item attributes
  220. #define MIXITEM_UNDEFINED    0      // TreeView item is undefined
  221. #define MIXITEM_MIXERLINE    1      // TreeView item represents a mixer line
  222. #define MIXITEM_MIXERCONTROL 2      // TreeView item represents a mixer control
  223.  
  224. // structure used to associate a mixer line or control with a TreeView item
  225. typedef struct tagMIXITEMINFO {   
  226.     DWORD dwItemType;               // MIXITEM_MIXERLINE or MIXITEM_MIXERCONTROL
  227.     union
  228.     {
  229.     DWORD dwLineID;             // line ID if MIXERLINE
  230.     DWORD dwControlID;          // control ID if MIXERCONTROL
  231.     };       
  232. }   MIXITEMINFO, FAR * LPMIXITEMINFO;
  233.  
  234. #define MAXMIXITEMS 100             // max number of items in TreeView control
  235.                     // increase this for larger systems
  236.  
  237. extern MIXITEMINFO amixii[MAXMIXITEMS];    // array of structs for associating
  238.                                            // mixer lines and controls with
  239.                                            // TreeView items.
  240.  
  241. extern UINT uMixItems;              // total number of TreeView items used
  242.  
  243. extern UINT      uNumMixers;        // number of mixer devices in system
  244. extern HMIXER    hMixer;            // handle of mixer device
  245. extern UINT      uMixerID;          // identifier for selected mixer
  246. extern MIXERCAPS MixerCaps;         // device capabilities of selected mixer
  247.  
  248. // bitmap resource id defines
  249. #define IDB_DESTLINE 101            // mixer destination line
  250. #define IDB_SRCLINE  102            // mixer source line
  251. #define IDB_CUSTOM   103            // mixer custom control
  252. #define IDB_METER    104            // mixer meter control
  253. #define IDB_SWITCH   105            // mixer switch control
  254. #define IDB_NUMBER   106            // mixer number control
  255. #define IDB_SLIDER   107            // mixer slider control
  256. #define IDB_FADER    108            // mixer fader control
  257. #define IDB_TIME     109            // mixer time control
  258. #define IDB_LIST     110            // mixer list control
  259.  
  260. // image list defines
  261. #define IL_DESTLINE  0              // mixer destination line
  262. #define IL_SRCLINE   1              // mixer source line
  263. #define IL_CUSTOM    2              // mixer custom control
  264. #define IL_METER     3              // mixer meter control
  265. #define IL_SWITCH    4              // mixer switch control
  266. #define IL_NUMBER    5              // mixer number control
  267. #define IL_SLIDER    6              // mixer slider control
  268. #define IL_FADER     7              // mixer fader control
  269. #define IL_TIME      8              // mixer time control
  270. #define IL_LIST      9              // mixer list control
  271.  
  272. #define IL_MAXIMAGES 10             // max number of images in image list
  273.  
  274. // structure for associating a bitmap with an index in the image list
  275. typedef struct tagIMAGELISTINFO {   
  276.     UINT uBitmapID;                 // bitmap resource ID
  277.     UINT uImageIndex;               // index of image in the image list
  278. } IMAGELISTINFO, FAR * LPIMAGELISTINFO;
  279.  
  280. extern IMAGELISTINFO aImageInfo[IL_MAXIMAGES];  // info for entire image list
  281.  
  282. //-------------------------------------------------------------------------
  283. // Version string definitions--Leave these alone.
  284.  
  285. #define SZRCOMPANYNAME "CompanyName"
  286. #define SZRDESCRIPTION "FileDescription"
  287. #define SZRVERSION     "FileVersion"
  288. #define SZRAPPNAME     "InternalName"
  289. #define SZRCOPYRIGHT   "LegalCopyright"
  290. #define SZRTRADEMARK   "LegalTrademarks"
  291. #define SZRPRODNAME    "ProductName"
  292. #define SZRPRODVER     "ProuctVersion"
  293.